package com.itheima.ood;

/**
 * 特点：
 *  随着类的加载而加载			----> 类是加载一次，因此被static修饰的成员也就是加载一次；因此有时我们也将静态变量称之为**类变量**
 *  优先于对象存在
 *  可以通过类名访问			-----> 本身也可以通过对象名进行访问，推荐使用类名
 *  被类的所有对象共享		    -----> 这也是我们判断是否使用静态关键字的条件
 */

/**
 * 注意事项：
 * 1. 在静态方法中没有this关键字
 *    为什么没有this关键字？    ----> 静态的动态是随着类的加载而加载，优先于对象存在，而this关键字表示的就是本类的一个对象，对象后进内存的
 *                                 先进内存的东西可能访问后进内存的成员吗？  ----> 不可以
 *
 * 2. 静态方法只能访问静态的成员变量和静态的成员方法
 * 3. 非静态方法可以访问静态的成员变量或者成员方法，也可以访问非静态的成员变量和成员方法
 */
public class Student {

    // 定义一个成员变量
    String name ;

    // 静态变量
    static int age ;

    // 定义了一个非静态的成员方法show
    public void show(){
        System.out.println(name);
        System.out.println(age);            // 非静态方法访问静态成员变量


        // 调用method         // 非静态的成员方法可以去访问静态方法
        method();

        // 调用method2
        method2();          // 非静态的成员方法可以去非访问静态方法

    }

    // 就是一个非静态方法
    public void method2(){
        System.out.println("method2..............");
    }

    // 定义一个静态方法
    public static void method(){
        System.out.println("method.......");

        // 静态方法可以去访问静态成员变量
        System.out.println(age);

        // 调用function方法; 静态方法可以去访问静态成员方法
        function();
    }

    // 定义了一个静态方法function
    public static void function(){

        // 在静态方法中没有this关键字
//        System.out.println(this.name);
    }

}
